home *** CD-ROM | disk | FTP | other *** search
/ Freesoft 1997 May / Freesoft_1997-05_cd.bin / inzer / minolta / drivers / WL400 / W3.1 disk 1 / SETUP.MS_ / SETUP.MS
Text File  |  1994-12-06  |  18KB  |  626 lines

  1. ON ERROR GOTO QUIT
  2. '$include 'setupapi.inc'
  3. '$include 'msdetect.inc'
  4. '$include 'symbol.inc'
  5. '$include 'dialogs.inc'
  6. '$include 'mscpydis.inc'
  7. '$include 'font.inc'
  8. '$include 'copyfile.inc'
  9. '$include 'updini.inc'
  10. '$include 'autodetc.inc'
  11. CONST LOGO = 1
  12. CONST EGA_HEIGHT% = 350
  13. CONST HERCULES_HEIGHT% = 348
  14. CONST iFotSize = 1600
  15. DECLARE FUNCTION GetSpaceCost(a%, b$, c$) AS LONG
  16. DECLARE FUNCTION ChkPrinterNum(iOurs%) AS INTEGER
  17. DECLARE FUNCTION UpdatePortStatusList() AS INTEGER
  18. EntryPoint:
  19. iTopItem = 0
  20. CursorSave% = 0
  21. InstallSpeaker% = NO%
  22. IniKeySpooler% = 2
  23. junk% = SetCopyMode (iON%)
  24. iStatus% = SendMessage(HwndFrame(), WM_SYSCOMMAND%, SC_MAXIMIZE%, "")
  25. SetTitle MSG_TITLE$
  26. SetBitmap DLL_CUIDLL$, LOGO
  27. GOSUB GetInstallInfo
  28. i% = GetSystemMetrics(SM_CYSCREEN)
  29. if i% = EGA_HEIGHT% OR i% = HERCULES_HEIGHT% then
  30. sz$ = UIStartDlg(DLL_CUIDLL$, CONTROLS_EGA, "FModelessDlgProc", 0, "")
  31. else
  32. sz$ = UIStartDlg(DLL_CUIDLL$, CONTROLS, "FModelessDlgProc", 0, "")
  33. end if
  34. IF GetWindowsMode() <> 2 THEN
  35. InfoDlgOneButton BTN_OK$, ENHANCED_MODE_REQUIRED, HELP_ENHANCED_MODE_REQUIRED
  36. GOTO ErrQuit
  37. END IF
  38. IF QueryTTEnabled() <> TRUE THEN
  39. InfoDlgOneButton BTN_OK$, REBOOT_NO_TTE, HELP_NOTT
  40. WHILE TRUE
  41. InfoDlgOneButton BTN_RESTART$, RESTART_TRUETYPE, HELP_RESTART_TRUETYPE
  42. junk% = EnableTTNeedsReboot()
  43. i% = ExitWindowsExec(WinDir$+FILE_RESTART$, "")
  44. WEND
  45. END IF
  46. InfoDlgOneButton BTN_CONTINUE$, WELCOME1, HELP_WELCOME
  47. WHILE InitSystem(1, "", 0, "FHelpDlgProc") = 0
  48. GOSUB AskQuit
  49. WEND
  50. GOSUB CalcComponent
  51. GOSUB SelectStuff
  52. FEnableControls FALSE
  53. ActionInstall
  54. FEnableControls TRUE
  55. GOSUB DlgVerify
  56. UpdateIniFiles
  57. GOSUB DlgExitInstall
  58. END
  59. QUIT:
  60. ON ERROR GOTO ErrQuit
  61. IF CursorSave% <> 0 THEN
  62. RestoreCursor CursorSave%
  63. CursorSave% = 0
  64. END IF
  65. IF ERR = 0 THEN
  66. dlg% = EXITSUCCESS
  67. ELSE
  68. CleanUp
  69. dlg% = EXITFAILURE
  70. UIPop 1
  71. END IF
  72. QUITL1:
  73. IF dlg% = EXITSUCCESS THEN
  74. iHelp% = HELP_EXITSUCCESS
  75. ELSE
  76. iHelp% = HELP_EXITFAILURE
  77. END IF
  78. FEnableControls TRUE
  79. FInitInfo0Dialog
  80. WHILE UIStartDlg(DLL_CUIDLL$, dlg%, "FInfo0DlgProc", iHelp%, "FHelpDlgProc") = VAL_REACTIVATE$
  81. FInitInfo0Dialog
  82. WEND
  83. UIPop 1
  84. END
  85. ErrQuit:
  86. dlg% = EXITFAILURE
  87. GOTO QUITL1
  88. AskQuit:
  89. DoAskQuit
  90. RETURN
  91. GetInstallInfo:
  92. sz$ = GetSymbolValue (SYM_SRCINFPATH$)
  93. IF sz$ = "" THEN
  94. sz$ = GetSymbolValue(SYM_CWDDIR$) + FILE_SETUPINF$
  95. END IF
  96. ReadInfFile sz$
  97. WinDir$ = GetWindowsDir
  98. SetSymbolValue SYM_DEST_DIR$, WinDir$
  99. WinDrive$ = MID$(WinDir$, 1, 1)
  100. SrcDir$ = GetSymbolValue(SYM_STF_SRCDIR$)
  101. WinSysDir$ = GetWindowsSysDir
  102. WinSysDrive$ = MID$(WinSysDir$, 1, 1)
  103. nDrive% = ASC(UCASE$(WinDrive$)) - ASC("A") + 1
  104. TestPageDir$ = PATH_TESTPAGE$
  105. ClusterByte& = DiskClusterUnit(nDrive%)
  106. IF (ClusterByte& AND 1) = 1 THEN
  107. ClusterByte& = 10240
  108. END IF
  109. IF ClusterByte& < iFotSize THEN
  110. ClusterByte& = iFotSize
  111. END IF
  112. SetRestartDir WinDir$
  113. dlg% = EXITFAILURE
  114. PrinterAddingIndex% = 1
  115. MakeListFromSectionKeys SYM_PORTNAMELIST$, SECT_PORTNAME$
  116. RETURN
  117. CalcComponent:
  118. FOR i% = 1 TO 3 STEP 1
  119. AddListItem SYM_CUSTOMCHECKSTATES$, VAL_CHKON$
  120. NEXT i%
  121. FOR i% = 1 TO 5 STEP 1
  122. AddListItem SYM_CUSTOMSTATUSTEXT$, ""
  123. NEXT i%
  124. MakeListFromSectionKeys SYM_TOTALFONTLIST$, SECT_FONTINF$
  125. SetSymbolValue SYM_FONTSELECTED$, VAL_ALL$
  126. CursorSave% = ShowWaitCursor()
  127. GetFontCost 0
  128. RemoveSymbol SYM_SECTIONLIST$
  129. AddListItem SYM_SECTIONLIST$, SECT_DLLINF$
  130. AddListItem SYM_SECTIONLIST$, SECT_HELPINF$
  131. lSize& = GetSpaceCost(TRUE, SYM_SECTIONLIST$, WinDir$)
  132. RemoveSymbol SYM_SECTIONLIST$
  133. AddListItem SYM_SECTIONLIST$, SECT_DRIVERINF$
  134. lSize& = lSize& + GetSpaceCost(TRUE, SYM_SECTIONLIST$, WinSysDir$)
  135. RemoveSymbol SYM_SECTIONLIST$
  136. AddListItem SYM_SECTIONLIST$, SECT_PCL$
  137. lSize& = lSize& + GetSpaceCost(TRUE, SYM_SECTIONLIST$, WinSysDir$)
  138. RemoveSymbol SYM_SECTIONLIST$
  139. AddListItem SYM_SECTIONLIST$, SECT_PCL2$
  140. lSize& = lSize& + GetSpaceCost(TRUE, SYM_SECTIONLIST$, WinDir$ + "wps\")
  141. RemoveSymbol SYM_SECTIONLIST$
  142. AddListItem SYM_SECTIONLIST$, SECT_TESTPAGELIST$
  143. lSize& = lSize + GetSpaceCost(FALSE, SYM_SECTIONLIST$, "")
  144. lSize& = lSize& + 2 * ClusterByte&
  145. dwComponentSize(DRIVERFILES) = lSize&
  146. ReplaceListItem SYM_CUSTOMSTATUSTEXT$, DRIVERFILES, DollarFormat(lSize&/1024)
  147. RemoveSymbol SYM_SECTIONLIST$
  148. IF DoesIniKeyExist (WinDir$+INI_SYSTEMINI$, INI_DRIVERS$, INI_WAVE$) = 0 THEN
  149. AddListItem SYM_SECTIONLIST$, SECT_SPKRDRVINF$
  150. END IF
  151. AddListItem SYM_SECTIONLIST$, SECT_SOUNDINF$
  152. lSize& = GetSpaceCost(TRUE, SYM_SECTIONLIST$, WinSysDir$)
  153. dwComponentSize(SOUNDFILES) = lSize&
  154. ReplaceListItem SYM_CUSTOMSTATUSTEXT$, SOUNDFILES, DollarFormat(lSize&/1024)
  155. RemoveSymbol SYM_SECTIONLIST$
  156. RestoreCursor CursorSave%
  157. dwComponentSize(FONTFILES) = TotalFontSize
  158. ReplaceListItem SYM_CUSTOMSTATUSTEXT$, FONTFILES, DollarFormat(TotalFontSize/1024)
  159. FOR i% = 1 TO MAX_COMPONENT
  160. dwSaveComponentSize(i%) = dwComponentSize(i%)
  161. NEXT i%
  162. RemoveSymbol SYM_TEMPLIST$
  163. MakeListFromSectionSize SYM_TEMPLIST$, SECT_DRIVERINF$
  164. DriverSize& = SumNumericList (SYM_TEMPLIST$, 1, 0)
  165. cItem% = GetListLength(SYM_PORTNAMELIST$)
  166. FOR i% = 1 TO cItem%
  167. AddListItem SYM_PORTSTATUSLIST$, VAL_CHKON$
  168. NEXT i%
  169. RETURN
  170. SelectStuff:
  171. iStep = METHOD_SELECT
  172. WHILE iStep <> EXIT_SELECT_STUFF
  173. SELECT CASE iStep
  174. CASE METHOD_SELECT
  175. GOSUB DlgInstallMethod
  176. CASE CUSTOM_SELECT
  177. GOSUB DlgCustomInstall
  178. CASE PRINTER_SOURCE
  179. GOSUB DlgPrinterSource
  180. CASE CHOOSE_CONNECT
  181. GOSUB DlgChooseConnect
  182. CASE PRINT_PORT_SLT
  183. GOSUB DlgPrintPortSelect
  184. CASE PRINTER_INFO
  185. GOSUB DlgPrinterConfig
  186. CASE AUTO_INSTALL
  187. GOSUB DlgAutomaticInstall
  188. CASE ELSE
  189. GOSUB AskQuit
  190. END SELECT
  191. WEND
  192. RETURN
  193. DlgInstallMethod:
  194. DIM bDoInstallMethod%
  195. DIM ExpressInstallSize&
  196. bDoInstallMethod = TRUE
  197. WHILE bDoInstallMethod
  198. SetSpaceStatus
  199. ExpressInstallSize = TotalInstallSize
  200. FInitInstallMethodDialog WinSysDrive$, ExpressInstallSize/1024
  201. sz$ = UIStartDlg(DLL_CUIDLL$, INSTALL_METHOD, "FInfoDlgProc", HELP_INST_METHOD, "FHelpDlgProc")
  202. SELECT CASE sz$
  203. CASE BTN_EXPRESS$
  204. UIPop 1
  205. IF DiskSpaceFree <= ExpressInstallSize THEN
  206. DlgInstallNoSpace
  207. ELSE
  208. RemoveSymbol SYM_CUSTOMCHECKSTATES$
  209. FOR i% = 1 TO 3
  210. AddListItem SYM_CUSTOMCHECKSTATES$, VAL_CHKON$
  211. NEXT i%
  212. InstallPM% = YES%
  213. iStatus% = ActionDetectPrintMgr()
  214. IF iStatus% >= 0 THEN
  215. GOSUB GetNextStep
  216. bDoInstallMethod = FALSE
  217. END IF
  218. END IF
  219. CASE BTN_CUSTOM$
  220. UIPop 1
  221. InstallPM% = NO%
  222. iStatus% = CUSTOM_SELECT
  223. GOSUB GetNextStep
  224. bDoInstallMethod = FALSE
  225. CASE BTN_EXIT$
  226. GOSUB AskQuit
  227. END SELECT
  228. WEND
  229. RETURN
  230. DlgCustomInstall:
  231. DIM bDoCustomInstall%, iRet%
  232. bDoCustomInstall = TRUE
  233. RemoveSymbol SYM_TEMPFONTLIST$
  234. WHILE bDoCustomInstall
  235. SetSymbolValue SYM_TEMPFONTLIST$, GetSymbolValue(SYM_FONTSELECTED$)
  236. SetSpaceStatus
  237. SetSymbolValue SYM_CHECKITEMSSTATE$, GetSymbolValue(SYM_CUSTOMCHECKSTATES$)
  238. SetSymbolValue SYM_STATUSITEMSTEXT$, GetSymbolValue(SYM_CUSTOMSTATUSTEXT$)
  239. sz$ = UIStartDlg(DLL_CUIDLL$, CUSTOM_INSTALL, "FCustInstDlgProc", HELP_CUSTOM_INST, "FHelpDlgProc")
  240. SELECT CASE sz$
  241. CASE BTN_FONTS$
  242. UIPop 1
  243. SetSymbolValue SYM_SAVEFONTLIST$, GetSymbolValue(SYM_FONTSELECTED$)
  244. SetSymbolValue SYM_FONTSELECTED$, GetSymbolValue(SYM_TEMPFONTLIST$)
  245. dwComponentSize(0) = dwComponentSize(FONTFILES)
  246. szSaveStatus$ = GetListItem(SYM_CUSTOMCHECKSTATES$, FONTFILES)
  247. IF szSaveStatus$ = VAL_CHKOFF$ THEN
  248. ReplaceListItem SYM_CUSTOMCHECKSTATES$, FONTFILES, VAL_CHKON$
  249. END IF
  250. sz$ = DlgFontSelection()
  251. IF sz$ = BTN_OK$ THEN
  252. IF GetListLength(SYM_FONTSELECTED$) > 0 THEN
  253. IF GetListItem(SYM_FONTSELECTED$, 1) = VAL_ALL$ THEN
  254. sz$ = VAL_CHKON$
  255. ELSE
  256. sz$ = VAL_CHKGREY$
  257. END IF
  258. ELSE
  259. sz$ = VAL_CHKOFF$
  260. END IF
  261. ReplaceListItem SYM_CUSTOMCHECKSTATES$, FONTFILES, sz$
  262. ELSE
  263. SetSymbolValue SYM_FONTSELECTED$, GetSymbolValue(SYM_SAVEFONTLIST$)
  264. dwComponentSize(FONTFILES) = dwComponentSize(0)
  265. ReplaceListItem SYM_CUSTOMSTATUSTEXT$, FONTFILES, DollarFormat(dwComponentSize(FONTFILES)/1024)
  266. IF szSaveStatus$ = VAL_CHKOFF$ THEN
  267. ReplaceListItem SYM_CUSTOMCHECKSTATES$, FONTFILES, szSaveStatus$
  268. END IF
  269. END IF
  270. CASE BTN_CONTINUE$
  271. IF DiskSpaceFree <= TotalInstallSize THEN
  272. DlgInstallNoSpace
  273. ELSEIF GetListItem (SYM_CUSTOMCHECKSTATES$, DRIVERFILES) = VAL_CHKOFF$ THEN
  274. IF (GetListItem (SYM_CUSTOMCHECKSTATES$, SOUNDFILES) = VAL_CHKOFF$) AND (GetListItem (SYM_CUSTOMCHECKSTATES$, FONTFILES) = VAL_CHKOFF$) THEN
  275. InfoDlgOneButton BTN_OK$, INSTALL_NOTHING, HELP_NOACTION
  276. ELSE
  277. iRet = iYES%
  278. IF iRet = iYES% THEN
  279. UIPop 1
  280. iStep = EXIT_SELECT_STUFF
  281. sz$ = GetIniKeyString (INI_WININI$, INI_WINDOWS, INI_SPOOLER$)
  282. IF UCASE$(sz$) = UCASE$(INI_YES$) THEN
  283. IniKeySpooler% = 3
  284. END IF
  285. bDoCustomInstall = FALSE
  286. END IF
  287. END IF
  288. ELSE
  289. UIPop 1
  290. iStatus% = ActionDetectPrintMgr()
  291. IF iStatus >= 0 THEN
  292. GOSUB GetNextStep
  293. bDoCustomInstall = FALSE
  294. END IF
  295. END IF
  296. CASE BTN_BACK$, BTN_CANCEL$
  297. UIPop 1
  298. iStep = PopStep()
  299. FOR i% = 1 TO 3 STEP 1
  300. dwComponentSize(i%) = dwSaveComponentSize(i%)
  301. ReplaceListItem SYM_CUSTOMCHECKSTATES$, i%, VAL_CHKON$
  302. ReplaceListItem SYM_CUSTOMSTATUSTEXT$, i%, DollarFormat(dwComponentSize(i%)/1024)
  303. NEXT i%
  304. SetSymbolValue SYM_FONTSELECTED$, VAL_ALL$
  305. bDoCustomInstall = FALSE
  306. CASE "CHK1"
  307. ToggleCheckStatus SYM_CUSTOMCHECKSTATES$, DRIVERFILES
  308. IF GetListItem(SYM_CUSTOMCHECKSTATES$, DRIVERFILES) = VAL_CHKON$ THEN
  309. dwComponentSize(DRIVERFILES) = dwSaveComponentSize(DRIVERFILES)
  310. ELSE
  311. dwComponentSize(DRIVERFILES) = 0
  312. END IF
  313. ReplaceListItem SYM_CUSTOMSTATUSTEXT$, DRIVERFILES, DollarFormat(dwComponentSize(DRIVERFILES)/1024)
  314. CASE "CHK2"
  315. ToggleCheckStatus SYM_CUSTOMCHECKSTATES$, SOUNDFILES
  316. IF GetListItem(SYM_CUSTOMCHECKSTATES$, SOUNDFILES) = VAL_CHKON$ THEN
  317. dwComponentSize(SOUNDFILES) = dwSaveComponentSize(SOUNDFILES)
  318. ELSE
  319. dwComponentSize(SOUNDFILES) = 0
  320. END IF
  321. ReplaceListItem SYM_CUSTOMSTATUSTEXT$, SOUNDFILES, DollarFormat(dwComponentSize(SOUNDFILES)/1024)
  322. CASE "CHK3"
  323. ToggleCheckStatus SYM_CUSTOMCHECKSTATES$, FONTFILES
  324. IF GetListItem(SYM_CUSTOMCHECKSTATES$, FONTFILES) = VAL_CHKON$ THEN
  325. SetSymbolValue SYM_FONTSELECTED$, VAL_ALL$
  326. dwComponentSize(FONTFILES) = dwSaveComponentSize(FONTFILES)
  327. ELSE
  328. RemoveSymbol SYM_FONTSELECTED$
  329. dwComponentSize(FONTFILES) = 0
  330. END IF
  331. ReplaceListItem SYM_CUSTOMSTATUSTEXT$, FONTFILES, DollarFormat(dwComponentSize(FONTFILES)/1024)
  332. CASE BTN_EXIT$
  333. GOSUB AskQuit
  334. END SELECT
  335. WEND
  336. RemoveSymbol SYM_TEMPFONTLIST$
  337. RETURN
  338. DlgPrinterSource:
  339. RemoveSymbol SYM_STATUSITEMSTEXT$
  340. iStatus = CHOOSE_CONNECT
  341. GOSUB GetNextStep
  342. RETURN
  343. DlgChooseConnect:
  344. DIM bDoChooseConnect%
  345. bDoChooseConnect = TRUE
  346. WHILE bDoChooseConnect
  347. FInitInfoDialog
  348. sz$ = UIStartDlg(DLL_CUIDLL$, NO_LOCAL_PRINTER, "FInfoDlgProc", HELP_NO_LOCAL, "FHelpDlgProc")
  349. SELECT CASE sz$
  350. CASE BTN_EXIT$
  351. GOSUB AskQuit
  352. CASE BTN_AUTOMATIC$
  353. UIPop 1
  354. sz$ = ActionDetectPrinter()
  355. IF sz$ = UCASE$(INI_YES$) THEN
  356. iStatus = AUTO_INSTALL
  357. GOSUB GetNextStep
  358. bDoChooseConnect = FALSE
  359. END IF
  360. CASE BTN_MANUAL$
  361. UIPop 1
  362. iStatus = PRINT_PORT_SLT
  363. GOSUB GetNextStep
  364. bDoChooseConnect = FALSE
  365. END SELECT
  366. WEND
  367. RETURN
  368. DlgPrintPortSelect:
  369. DIM bDoPrintPortSelect%, iSupportNet%
  370. bDoPrintPortSelect = TRUE
  371. WHILE bDoPrintPortSelect
  372. iSupportNet% = ActionDetectPorts()
  373. IDC_A& = 401
  374. RemoveSymbol SYM_BUTTONSGREYED$
  375. IF iSupportNet = 0 THEN
  376. SetSymbolValue SYM_BUTTONSGREYED$, itoa(IDC_A&)
  377. END IF
  378. SetSymbolValue SYM_LISTITEMSIN$, GetSymbolValue(SYM_PORTSDESC$)
  379. SetSymbolValue SYM_LISTITEMSOUT$, ""
  380. sz$ = UIStartDlg(DLL_CUIDLL$, PRINT_PORT_SELECT, "FListDlgProc", HELP_PORT_SELECT, "FHelpDlgProc")
  381. IF sz$ = BTN_SELECT$ THEN
  382. PortAdding$ = GetSymbolValue(SYM_LISTITEMSOUT$)
  383. IF PortAdding$ <> "" THEN
  384. UIPop 1
  385. iStatus = DlgPrintPage()
  386. IF iStatus >= 0 THEN
  387. GOSUB GetNextStep
  388. bDoPrintPortSelect = FALSE
  389. END IF
  390. END IF
  391. ELSEIF sz$ = BTN_NETWORKPRN$ THEN
  392. UIPop 1
  393. PortAdding$ = GetSymbolValue(SYM_LISTITEMSOUT$)
  394. FEnableControls FALSE
  395. IF (iSupportNet% AND 64) THEN
  396. i% = WNetConnectionDialog(HwndFrame(), 3)
  397. ELSEIF (iSupportNet% AND 4) THEN
  398. i% = WNetConnectDialog(HwndFrame(), 3)
  399. ELSEIF (iSupportNet% AND 1) THEN
  400. i% = PrinterSetup(HwndFrame(), 101)
  401. END IF
  402. FEnableControls TRUE
  403. ELSEIF (sz$ = BTN_BACK$) OR (sz$ = BTN_CANCEL$) THEN
  404. UIPop 1
  405. iStep = PopStep()
  406. bDoPrintPortSelect = FALSE
  407. ELSEIF sz$ = BTN_EXIT$ THEN
  408. GOSUB AskQuit
  409. END IF
  410. WEND
  411. RETURN
  412. DlgPrinterConfig:
  413. DIM bDoPrinterConfig%, bDoMore%
  414. InitPrinterConfigDlg PrinterAddingIndex%
  415. SetSymbolValue SYM_COMBO3$, DEFAULT_COMPAT$
  416. SetSymbolValue SYM_COMBO1$, DEFAULT_NAME$
  417. bDoPrinterConfig = TRUE
  418. WHILE bDoPrinterConfig
  419. sz$ = UIStartDlg(DLL_CUIDLL$, PRINTER_CONFIG, "FInfo0DlgProc", HELP_MANUAL_CONFIG, "FHelpDlgProc")
  420. SELECT CASE sz$
  421. CASE BTN_CONTINUE$
  422. IF (GetListLength (SYM_LISTITEMSIN$) = 0) OR (GetListLength (SYM_LISTITEMSOUT$) = 0) OR (GetListLength (SYM_COMBO3$) = 0) THEN
  423. InfoDlgOneButton BTN_OK$, INFO_REQUIRED, HELP_INFO_REQUIRED
  424. ELSEIF EditPrinterConfiginfo(VAL(GetSymbolValue(SYM_COMBO3$))) = TRUE THEN
  425. UIPop 1
  426. FInitInfo0Dialog
  427. iStatus = AUTO_INSTALL
  428. GOSUB GetNextStep
  429. bDoPrinterConfig = FALSE
  430. END IF
  431. CASE BTN_PRINT$
  432. IF MID$(PortAdding$, 9, 3) = "not" THEN
  433. InfoDlgOneButton BTN_OK$, NO_CONFIG_PAGE, HELP_COMM_ERROR
  434. ELSE
  435. CursorSave% = ShowWaitCursor()
  436. sz$ = GetIniKeyString (INI_WININI$, INI_WINDOWS$, INI_DEVICE$)
  437. i% = FileToComm(GetSymbolValue(SYM_CWDDIR$)+FILE_CONFIGPAGE$, MID$(PortAdding$, 1, 4),HwndFrame())
  438. RestoreCursor CursorSave%
  439. CursorSave% = 0
  440. IF i% = TRUE THEN
  441. InfoDlgOneButton BTN_OK$, NO_CONFIG_PAGE, HELP_COMM_ERROR
  442. ENDIF
  443. END IF
  444. CASE BTN_BACK$, BTN_CANCEL$
  445. UIPop 1
  446. iStep = PopStep()
  447. bDoPrinterConfig = FALSE
  448. CASE BTN_EXIT$
  449. GOSUB AskQuit
  450. END SELECT
  451. WEND
  452. RETURN
  453. DlgAutomaticInstall:
  454. DIM bDoAutomaticInstall%, iOurs%
  455. bDoAutomaticInstall = TRUE
  456. WHILE bDoAutomaticInstall
  457. ResetStepStack
  458. FInitAutoDialog
  459. bAvailPort% = UpdatePortStatusList()
  460. IDC_A& = 401
  461. IF bAvailPort% = FALSE THEN
  462. SetSymbolValue SYM_BUTTONSGREYED$, itoa(IDC_A&)
  463. END IF
  464. sz$ = UIStartDlg(DLL_CUIDLL$, AUTOMATIC_INSTALL, "FMultiDlgProc", HELP_INSTALL_PRINTERS, "FHelpDlgProc")
  465. SELECT CASE sz$
  466. CASE BTN_CONTINUE$
  467. cItem% = GetListLength(SYM_PORTNAMELIST$)
  468. iOurs% = 0
  469. FOR i% = 1 TO cItem%
  470. j% = GetListLength(GetListItem(SYM_PORTNAMELIST$, i%))
  471. IF j% > 2 THEN
  472. iOurs% = iOurs% + 1
  473. END IF
  474. NEXT i%
  475. IF iOurs% > 0 THEN
  476. IF ChkPrinterNum(iOurs%) = FALSE THEN
  477. UIPop 1
  478. iStep = EXIT_SELECT_STUFF
  479. bDoAutomaticInstall = FALSE
  480. END IF
  481. ELSE
  482. InfoDlgOneButton BTN_OK$, PRINTER_LIST_EMPTY, HELP_PRINTER_LIST_EMPTY
  483. END IF
  484. CASE BTN_ADDITIONAL$
  485. UIPop 1
  486. iStatus = PRINT_PORT_SLT
  487. GOSUB GetNextStep
  488. bAvailPort% = UpdatePortStatusList()
  489. bDoAutomaticInstall = FALSE
  490. CASE BTN_DELETE$
  491. Gosub DlgDeleteAutoDetect
  492. CASE BTN_EXIT$
  493. GOSUB AskQuit
  494. END SELECT
  495. WEND
  496. RETURN
  497. DlgDeleteAutoDetect:
  498. WHILE TRUE
  499. sz$ = UIStartDlg(DLL_CUIDLL$, CANT_DELETE_AUTO, "FInfo0DlgProc", HELP_NO_DELETE, "FHelpDlgProc")
  500. IF sz$ = BTN_OK$ THEN
  501. UIPop 1
  502. RETURN
  503. ELSEIF sz$ = BTN_EXIT$ THEN
  504. GOSUB AskQuit
  505. END IF
  506. WEND
  507. DlgVerify:
  508. RemoveSymbol SYM_TEMPLIST$
  509. IF GetListItem(SYM_CUSTOMCHECKSTATES$, DRIVERFILES) = VAL_CHKOFF$ THEN
  510. sz$ = MSG_NODRIVER$
  511. ELSE
  512. sz$ = MSG_WITHDRIVER$
  513. END IF
  514. AddListItem SYM_TEMPLIST$, sz$
  515. sz1$ = szW$ + szSnd$
  516. IF GetListItem(SYM_CUSTOMCHECKSTATES$, SOUNDFILES) = VAL_CHKOFF$ THEN
  517. sz$ = MSG_NOSOUND$
  518. ELSE
  519. sz$ = MSG_WITHSOUND$
  520. END IF
  521. AddListItem SYM_TEMPLIST$, sz$
  522. sz1$ = szT$
  523. IF GetListItem(SYM_CUSTOMCHECKSTATES$, FONTFILES) = VAL_CHKOFF$ THEN
  524. sz$ = MSG_NOTRUETYPE$
  525. ELSE
  526. j% = GetListLength (SYM_FONTSELECTED$)
  527. IF (j% = 1) AND (GetListItem(SYM_FONTSELECTED$, 1) = VAL_ALL$) THEN
  528. j% = GetListLength (SYM_TOTALFONTLIST$)
  529. ENDIF
  530. sz$ = MSG_WITHTRUETYPE1$ + STR$(j%)
  531. IF j% > 1 THEN
  532. sz$ = sz$ + MSG_WITHTRUETYPE2$
  533. ELSE
  534. sz$ = sz$ + MSG_WITHTRUETYPE3$
  535. END IF
  536. sz$ = sz$ + MSG_WITHTRUETYPE4$
  537. END IF
  538. AddListItem SYM_TEMPLIST$, sz$
  539. SELECT CASE IniKeySpooler%
  540. CASE 1
  541. sz$ = MSG_USEPRINTMGR$
  542. CASE 3
  543. sz$ = MSG_KEEPPRINTMGR$
  544. CASE ELSE
  545. sz$ = MSG_NOPRINTMGR$
  546. END SELECT
  547. AddListItem SYM_TEMPLIST$, sz$
  548. IF InstallSpeaker% = YES% THEN
  549. sz$ = MSG_WITHSPEAKER$
  550. ELSE
  551. sz$ = MSG_NOSPEAKER$
  552. END IF
  553. AddListItem SYM_TEMPLIST$, sz$
  554. SetSymbolValue SYM_STATUSITEMSTEXT$, GetSymbolValue(SYM_TEMPLIST$)
  555. InfoDlgAOneButton BTN_OK$, VERIFY, HELP_VERIFY
  556. sz$ = ""
  557. RemoveSymbol SYM_TEMPLIST$
  558. RETURN
  559. DlgExitInstall:
  560. WHILE TRUE
  561. InfoDlgOneButton BTN_RESTART$, INSTALL_COMPLETE, HELP_RESTARTWIN
  562. IF RestartListEmpty() THEN
  563. i% = ExitWindowsExec(WinDir$+FILE_RESTART$, "")
  564. ELSE
  565. i% = ExitExecRestart()
  566. END IF
  567. WEND
  568. RETURN
  569. GetNextStep:
  570. bRet% = PushStep(iStep, iStatus)
  571. IF bRet% THEN
  572. iStep = iStatus
  573. ELSE
  574. iStep = -1
  575. END IF
  576. RETURN
  577. FUNCTION GetSpaceCost(bTestExist%, SectionList$, DestDir$) STATIC AS LONG
  578. TotalSize& = DWGetSpaceCost(bTestExist%, ClusterByte&, SectionList$, DestDir$)
  579. GetSpaceCost& = TotalSize&
  580. END FUNCTION
  581. FUNCTION UpdatePortStatusList() STATIC AS INTEGER
  582. DIM bRet%
  583. bRet% = FALSE
  584. cItem% = GetListLength(SYM_PORTNAMELIST$)
  585. IF cItem% = GetListLength(SYM_PORTSTATUSLIST$) THEN
  586. FOR i% = 1 TO cItem%
  587. j% = GetListLength(GetListItem(SYM_PORTNAMELIST$, i%))
  588. IF j% > 2 THEN
  589. ReplaceListItem SYM_PORTSTATUSLIST$, i%, VAL_CHKOFF$
  590. ELSE
  591. ReplaceListItem SYM_PORTSTATUSLIST$, i%, VAL_CHKON$
  592. bRet% = TRUE
  593. END IF
  594. NEXT i%
  595. END IF
  596. UpdatePortStatusList = bRet%
  597. END FUNCTION
  598. FUNCTION ChkPrinterNum(iOurs%) STATIC AS INTEGER
  599. DIM iCount%
  600. DIM iNeeded%
  601. szFile$ = WinDir$ + INI_WININI$
  602. ChkPrinterNum = FALSE
  603. IF DoesIniKeyExist(szFile$, INI_DEVICES$, MSG_WPS$) = 0 THEN
  604. iCount% = GetPrinterNum(INI_DEVICES$)
  605. IF iCount%+iOurs% > MAX_PRINTER THEN
  606. iNeeded% = iCount% + iOurs% - MAX_PRINTER
  607. szText$ = MSG_OVERPRINTER1$
  608. szText$ = szText$ + str$(iCount%)
  609. szText$ = szText$ + MSG_OVERPRINTER2$
  610. szText$ = szText$ + str$(iNeeded%)
  611. IF iNeeded% <> 1 THEN
  612. szText$ = szText$ + MSG_OVERPRINTER3$
  613. ELSE
  614. szText$ = szText$ + MSG_OVERPRINTER4$
  615. END IF
  616. szText$ = szText$ + MSG_OVERPRINTER5$
  617. FEnableControls FALSE
  618. i% = DoMsgBox(szText$,MSG_WPS$,48)
  619. FEnableControls TRUE
  620. ChkPrinterNum = TRUE
  621. END IF
  622. END IF
  623. szText$ = ""
  624. szFile$ = ""
  625. END FUNCTION
  626.